package com.dzxcqmxm.servlet.photo;

import com.dzxcqmxm.Dao.AlbumDao;
import com.dzxcqmxm.Dao.PhotoDao;
import com.dzxcqmxm.Dao.impl.AlbumDaoImpl;
import com.dzxcqmxm.Dao.impl.PhotoDaoImpl;
import com.dzxcqmxm.JB.Album;
import com.dzxcqmxm.JB.Photo;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.File;
import java.io.IOException;

/**
 * 这里实现增加照片，并且把照片写到表里边
 * 因为得结合user
 * 和那个相册url
 * 所以得调用方法
 *
 */
@MultipartConfig()
public class addPhotoServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /**
         * 获取照片展示页面携带的session参数
         * session对象，在Servlet页面中获取的写法
         * request.getSession ().getAttribute ("XTXCName3");
         */

        Photo photo = new Photo();
        String AlbumUrl = (String) request.getSession ().getAttribute ("AlbumUrl");
        String XTXCName = (String) request.getSession ().getAttribute ("XTXCName");
        String AlbumName = (String) request.getSession ().getAttribute ("AlbumName");

        System.out.println("打印我在增加照片页面获取到的AlbumUrl"+AlbumUrl);
        System.out.println("打印我在增加照片页面获取到的XTXCName"+XTXCName);
        System.out.println("打印我在增加照片页面获取到的AlbumName"+AlbumName);
        //获取表单中我输入的数据，也就是照片名
        photo.setPhotoName(new String(request.getParameter("PhotoName" ).getBytes("iso-8859-1"),"UTF-8"));

        /**
         * 在本地文件夹新增用户相册
         */
        if(AlbumUrl!=null){
            Part part = request.getPart("fileName");
            //设置文件名
            String fileName = photo.getPhotoName();
            //获得文件头
            String h = part.getHeader("content-disposition");
            //获取那个文件的后缀名
            String name3 = h.substring(h.lastIndexOf("."),h.length()-1);
            //写入指定的文件名，以及注意文件上传的位置
            /**
             * 啊啊啊这里要写出系统相册名和相册名，真是救命,我把session对象传来传去就是说
             */
            part.write("D:\\电子相册\\"+XTXCName+"\\"+AlbumName+"\\"+fileName+name3);

            /**
             * 上面已经实现按照分类上传到本机了
             * 那么，准备把他们都设置值，待会写到数据库里
             */
            ServletContext context = this.getServletContext();
            //获取数据，类似键值对，需要通过键名获取
            String username=(String) context.getAttribute("username");
            System.out.println("打印一下获得的全局变量username"+username);
            /**
             * 然后准备好要写进数据库里的数值，在执行增加的值
             */
            photo.setAlbumName(AlbumName);
            photo.setAlbumUrl(AlbumUrl);
            photo.setUserName(username);
            photo.setPhotoUrl(AlbumUrl+"/"+photo.getPhotoName()+name3);
            System.out.println("测试我们完整的照片路径"+AlbumUrl+"/"+photo.getPhotoName()+name3);
            photo.setPhotoBaoMi("0");

            /**
             * 新增一栏删除路径，也就是BenDiPhotoUrl
             */
            photo.setBenDiPhotoUrl("D:/电子相册/"+XTXCName+"/"+AlbumName+"/"+photo.getPhotoName()+name3);

        }


        PhotoDao photoDao = new PhotoDaoImpl();

        /**
         * 执行增加方法
         */
        try {
            photoDao.addPhoto(photo);
        } catch (Exception e) {
            e.printStackTrace();
        }


        response.sendRedirect("/dzxc/YongHu/yhPhoto/yhDisplayPhoto.jsp");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
}
